// Grunt 入口文件
// 用于定义一些需要 Grunt 自动执行的任务
// 需要导出一个函数
// 此函数接收一个 grunt 的形参，内部提供一些创建任务时可以用到的 API
const sass = require('sass')
const loadGruntTasks = require('load-grunt-tasks')

module.exports = grunt => {
    // grunt.registerTask('foo', () => {
    //     console.log('hello grunt~')
    // })

    // grunt.initConfig({
    //     // foo: 'bar'
    //     foo: {
    //         bar: 123
    //     }
    // })

    // grunt.registerTask('foo', () => {
    //     console.log(grunt.config('foo'))
    // })

    // grunt.registerTask('bar', '任务描述', () => {
    //     console.log('other task')
    // })

    // grunt.registerTask('default', ['foo', 'bar'])

    // grunt.registerTask('async-task', function () {
    //     const done = this.async()
    //     setTimeout(() => {
    //         console.log('async task working')
    //         done()
    //     }, 1000)
    // })

    grunt.initConfig({
        sass: {
            options: {
                sourceMap: true,
                implementation: sass
            },
            main: {
                files: {
                    'dist/css/main.css': 'scss/main.scss'
                }
            }
        },
        babel: {
            options: {
                presets: ['@babel/preset-env']
            },
            main: {
                files: {
                    'dist/js/app.js': 'js/app.js'
                }
            }
        },
        watch: {
            js: {
                files: ['js/*.js'],
                task: ['babel']
            },
            scss: {
                files: ['scss/*.scss'],
                task: ['sass']
            }
        }
    })

    // grunt.loadNpmTasks('grunt-sass')
    loadGruntTasks(grunt) // 自定加载所有的 grunt 插件中的任务

    grunt.registerTask('default', ['sass', 'babel', 'watch'])
}